Technologies for establishing device locality

ABSTRACT

Technologies for establishing device locality are disclosed. A processor in a computing device generates an identifier distinct to the computing device. The processor transmits the identifier to a management controller via a hardware bus in the computing device. The processor generates a key and encrypts the key with the identifier to generate a wrapped key. The processor transmits the wrapped key to the management controller. In turn, the management controller unwraps the key using the identifier. Other embodiments are described and claimed.

BACKGROUND

Current processors may provide support for a trusted executionenvironment such as a secure enclave. Secure enclaves include segmentsof memory (including code and/or data) protected by the processor fromunauthorized access including unauthorized reads and writes. Inparticular, certain processors may include Intel® Software GuardExtensions (SGX) to provide secure enclave support. In particular, SGXprovides confidentiality, integrity, and replay-protection to the secureenclave data for a given computing device while the data is resident inthe platform memory and thus provides protection against both softwareand hardware attacks. The on-chip boundary forms a natural securityboundary, where data and code may be stored in plaintext and assumed tobe secure. Intel® SGX does not protect I/O data that moves across theon-chip boundary.

SGX may further be used to protect a platform services enclave (PSE).The PSE may provide security-related services to the platform, such asmonotonic counters, trusted time services, and remote attestationservices. Further, the PSE may establish secure communication sessionswith other hardware components in a computing device, includingmanagement controllers (e.g., a converged security and manageabilityengine (CSME)) having modules configured to perform cryptographicfunctions external to an operation system of the computing device.

BRIEF DESCRIPTION OF THE DRAWINGS

The concepts described herein are illustrated by way of example and notby way of limitation in the accompanying figures. For simplicity andclarity of illustration, elements illustrated in the figures are notnecessarily drawn to scale. Where considered appropriate, referencelabels have been repeated among the figures to indicate corresponding oranalogous elements.

FIG. 1 is a simplified block diagram of at least one embodiment of acomputing device for establishing device locality therein;

FIG. 2 is a simplified block diagram of at least one embodiment of anenvironment of the computing device of FIG. 1;

FIG. 3 is a simplified block diagram of an example embodiment ofproviding a locality domain identifier between a processor and aconverged security and manageability engine (CSME);

FIG. 4 is a simplified flow diagram of at least one embodiment of amethod for exchanging a locality domain identifier between a processorand a CSME;

FIG. 5 is a simplified flow diagram of at least one embodiment of amethod for performing challenges between a processor and a CSME toestablish device locality.

DETAILED DESCRIPTION OF THE DRAWINGS

While the concepts of the present disclosure are susceptible to variousmodifications and alternative forms, specific embodiments thereof havebeen shown by way of example in the drawings and will be describedherein in detail. It should be understood, however, that there is nointent to limit the concepts of the present disclosure to the particularforms disclosed, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives consistent with the presentdisclosure and the appended claims.

References in the specification to “one embodiment,” “an embodiment,”“an illustrative embodiment,” etc., indicate that the embodimentdescribed may include a particular feature, structure, orcharacteristic, but every embodiment may or may not necessarily includethat particular feature, structure, or characteristic. Moreover, suchphrases are not necessarily referring to the same embodiment. Further,when a particular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the art to effect such feature, structure,or characteristic in connection with other embodiments whether or notexplicitly described. Additionally, it should be appreciated that itemsincluded in a list in the form of “at least one A, B, and C” can mean(A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).Similarly, items listed in the form of “at least one of A, B, or C” canmean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).

The disclosed embodiments may be implemented, in some cases, inhardware, firmware, software, or any combination thereof. The disclosedembodiments may also be implemented as instructions carried by or storedon a transitory or non-transitory machine-readable (e.g.,computer-readable) storage medium, which may be read and executed by oneor more processors. A machine-readable storage medium may be embodied asany storage device, mechanism, or other physical structure for storingor transmitting information in a form readable by a machine (e.g., avolatile or non-volatile memory, a media disc, or other media device).

In the drawings, some structural or method features may be shown inspecific arrangements and/or orderings. However, it should beappreciated that such specific arrangements and/or orderings may not berequired. Rather, in some embodiments, such features may be arranged ina different manner and/or order than shown in the illustrative figures.Additionally, the inclusion of a structural or method feature in aparticular figure is not meant to imply that such feature is required inall embodiments and, in some embodiments, may not be included or may becombined with other features.

Referring now to FIG. 1, an illustrative computing device 100 forestablishing device locality is shown. In use, as further describedherein, the computing device 100 provides a processor 120 that generatesa locality domain identifier (LDID) distinct to the computing device 100that is shared with other components on a hardware platform of thecomputing device 100. The LDID is transmitted via local channels, suchas a hardware bus of the computing device 100, to ensure that only localhardware components have possession of the LDID. As a result, theprocessor (or other hardware components in the computing device 100) mayuse the LDID as proof of locality to other local components on thecomputing device 100. For example, the processor 120 may securelyprovision a management controller (e.g., a CSME 144) with the LDID, andperform a challenge-response handshake using the LDID to subsequentlyestablish a secure communication session between the processor 120 andthe CSME 144. Advantageously, using a local identifier to establish thathardware components are on the same system ensures that securecommunication sessions are established within the same physical deviceand not with a remote system. Thus, embodiments presented herein providean approach for preventing malicious attacks, such as remote pairingattacks, on the computing device 100.

The computing device 100 may be embodied as any type of device capableof performing the functions described herein. For example, the computingdevice 100 may be embodied as, without limitation, a computer, a laptopcomputer, a tablet computer, a notebook computer, a mobile computingdevice, a smartphone, a wearable computing device, a multiprocessorsystem, a server, a workstation, and/or a consumer electronic device. Asshown in FIG. 1, the illustrative computing device 100 includes aprocessor 120, an I/O subsystem 128, a memory 130, a data port 131, adata storage device 132, a CID filter 136, one or more I/O controllers138, and a security management controller (e.g., a converged securityand manageability engine (CSME)) 144. Additionally, in some embodiments,one or more of the illustrative components may be incorporated in, orotherwise form a portion of, another component. For example, the memory130, or portions thereof, may be incorporated in the processor 120 insome embodiments.

The processor 120 may be embodied as any type of processor capable ofperforming the functions described herein. For example, the processor120 may be embodied as a single or multi-core processor(s), digitalsignal processor, microcontroller, or other processor orprocessing/controlling circuit. As shown, the processor 120illustratively includes secure enclave support 122, a cryptographicengine 124, and a cryptographic engine instruction set architecture(ISA) 126. The secure enclave support 122 allows the processor 120 toestablish a trusted execution environment known as a secure enclave, inwhich executing code may be measured, verified, and/or otherwisedetermined to be authentic. Additionally, code and data included in thesecure enclave may be encrypted or otherwise protected from beingaccessed by code executing outside of the secure enclave. For example,code and data included in the secure enclave may be protected byhardware protection mechanisms of the processor 120 while being executedor while being stored in certain protected cache memory of the processor120. The code and data included in the secure enclave may be encryptedwhen stored in a shared cache or the main memory 130. Further, thesecure enclave support 122 may create a platform services enclave (PSE),which is a trusted execution environment that provides access toservices provided by the CSME 144, including monotonic counters, trustedtime services, remote attestation services, and others. The PSE maycommunicate with other hardware components (e.g., the I/O subsystem 128,the CSME 144, other processors 120, etc.) and secure enclaves in thecomputing device 100 via one or more secure communication sessions. Thesecure enclave support 122 may be embodied as a set of processorinstruction extensions that allows the processor 120 to establish one ormore secure enclaves in the memory 130. For example, the secure enclavesupport 122 may be embodied as Intel® Software Guard Extensions (SGX)technology.

The cryptographic engine 124 may be embodied as one or more hardwarefunctional blocks (IP blocks), microcode, or other resources of theprocessor 120 that allows the processor 120 to perform trusted I/O (TIO)functions. For example, as described further below, the cryptographicengine 124 may perform TIO functions such as encrypting and/ordecrypting DMA I/O data input from and/or output to one or more I/Odevices 140. In particular, in some embodiments, plaintext I/O data maybe stored in a TIO Processor Reserved Memory (TIO PRM) region that isnot accessible to software of the computing device 100, and thecryptographic engine 124 may be used to encrypt the plaintext DMA I/Odata and copy the encrypted data to an ordinary kernel I/O buffer. Theprocessor 120 may also include one or more range registers or otherfeatures to protect the TIO PRM from unauthorized access.

The cryptographic engine ISA 126 may be embodied as one or moreprocessor instructions, model-specific registers, or other processorfeatures that allows software executed by the processor 120 to securelyprogram and otherwise use the cryptographic engine 124 and acorresponding CID filter 136, described further below. For example, thecryptographic engine ISA 126 may include processor features to bindprogramming instructions to the cryptographic engine 124 and/or the CIDfilter 136, unwrap bound programming instructions, securely clean theTIO PRM region of the memory 130, and/or securely copy and encrypt datafrom the TIO PRM region to a kernel I/O buffer. Additionally oralternatively, although illustrated as including trusted I/Ocapabilities, in some embodiments the computing device 100 may notinclude one or more components related to trusted I/O. For example, insome embodiments, the computing device 100 may not include the CIDfilter 136, the cryptographic engine 124, and/or the cryptographicengine ISA 126.

The CSME 144 may be embodied as a hardware platform controller thatincludes logic to perform operations relating to security on thecomputing device 100 and management of access to hardware resources. Forinstance, the CSME 144 performs various cryptographic functions (e.g.,encryption and decryption of data) for the computing device 100 that areexternal from the processor 120 and operating system of the computingdevice 100. The CSME 144 may also provide security-related services suchas monotonic counters, trusted time services, and other services.

The memory 130 may be embodied as any type of volatile or non-volatilememory or data storage capable of performing the functions describedherein. In operation, the memory 130 may store various data and softwareused during operation of the computing device 100 such as operatingsystems, applications, programs, libraries, and drivers. Further, thememory 130 may also include the TIO PRM region. Further, the memory 130may be connected with one or more data ports 131 to send and receivedata from the processor 120 and the I/O subsystem 128. In otherembodiments, the memory 130 is communicatively coupled to the processor120 via the I/O subsystem 128. The I/O subsystem 128, which may beembodied as circuitry and/or components to facilitate input/outputoperations with the processor 120, the memory 130, and other componentsof the computing device 100. For example, the I/O subsystem 128 may beembodied as, or otherwise include, memory controller hubs, input/outputcontrol hubs, sensor hubs, host controllers, firmware devices,communication links (i.e., point-to-point links, bus links, wires,cables, light guides, printed circuit board traces, etc.) and/or othercomponents and subsystems to facilitate the input/output operations. Insome embodiments, the memory 130 may be directly coupled to theprocessor 120, for example via an integrated memory controller hub. TheI/O subsystem 128 may further include a secure fabric 142. The securefabric 142 provides secure routing support, which may include hardwaresupport to ensure I/O data cannot be misrouted in the I/O subsystem 128under the influence of rogue software. The secure fabric 142 may be usedwith the CID filter 136 to provide cryptographic protection of I/O data.Additionally, in some embodiments, the I/O subsystem 128 may form aportion of a system-on-a-chip (SoC) and be incorporated, along with theprocessor 120, the memory 130, and other components of the computingdevice 100, on a single integrated circuit chip. Additionally oralternatively, in some embodiments the processor 120 may include anintegrated memory controller and a system agent, which may be embodiedas a logic block in which data traffic from processor cores and I/Odevices converges before being sent to the memory 130.

The data storage device 132 may be embodied as any type of device ordevices configured for short-term or long-term storage of data such as,for example, memory devices and circuits, memory cards, hard diskdrives, solid-state drives, non-volatile flash memory, or other datastorage devices. The computing device 100 may also include acommunications subsystem 134, which may be embodied as any communicationcircuit, device, or collection thereof, capable of enablingcommunications between the computing device 100 and other remote devicesover a computer network (not shown). The communications subsystem 134may be configured to use any one or more communication technology (e.g.,wired or wireless communications) and associated protocols (e.g.,Ethernet, Bluetooth®, Wi-Fi®, WiMAX, 3G, 4G LTE, etc.) to effect suchcommunication.

The CID filter 136 may be embodied as any hardware component, functionalblock, logic, or other circuit that performs CID filtering function(s),including filtering I/O transactions based on CIDs inserted by the I/Ocontrollers 138. For example, the CID filter 136 may observe DMAtransactions inline, perform test(s) based on the CID and memory addressincluded in the transaction, and drop transactions that fail thetest(s). In the illustrative embodiment, the CID filter 136 isincorporated in the I/O subsystem 128. In other embodiments, the CIDfilter 136 may be included in one or more other components and/or in anSoC with the processor 120 and I/O subsystem 128 as separate components.

Each of the I/O controllers 138 may be embodied as any embeddedcontroller, microcontroller, microprocessor, functional block, logic, orother circuit or collection of circuits capable of performing thefunctions described herein. In some embodiments, one or more of the I/Ocontrollers 138 may be embedded in another component of the computingdevice 100 such as the I/O subsystem 128 and/or the processor 120.Additionally or alternatively, one or more of the I/O controllers 138may be connected to the I/O subsystem 128 and/or the processor 120 viaan expansion bus such as PCI Express (PCIe) or other I/O connection. Asdescribed above, the I/O controllers 138 communicate with one or moreI/O devices 140, for example over a peripheral communications bus (e.g.,USB, Bluetooth, etc.). The I/O devices 140 may be embodied as any I/Odevice, such as human interface devices, keyboards, mice, touch screens,microphones, cameras, and other input devices, as well as displays andother output devices. As described above, the I/O controllers 138 andassociated DMA channels are uniquely identified using identifiers calledchannel identifiers (CIDs). Each I/O controller 138 may assert anappropriate CID with every DMA transaction, for example as part of atransaction layer packet (TLP) prefix, to uniquely identify the sourceof the DMA transaction and provide liveness protections. The CID alsoenables the isolation of I/O from different devices 140.

Referring now to FIG. 2, in an illustrative embodiment, the computingdevice 100 establishes an environment 200 during operation.Illustratively, the environment 200 provides a generation engine 202, acommunication engine 204, a crypto engine 206, a service engine 208, acommunication engine 210, and a crypto engine 212. The variouscomponents of the environment 200 may be embodied as hardware, firmware,software, or a combination thereof. As such, in some embodiments, one ormore of the components of the environment 200 may be embodied ascircuitry or collection of electrical devices (e.g., generation enginecircuitry 202, communication engine 204 circuitry 204, crypto enginecircuitry 206, service engine circuitry 208, communication enginecircuitry 210, and/or crypto engine circuitry 212). It should beappreciated that, in such embodiments, one or more of the generationengine 202, communication engine 204, crypto engine 206, service engine208, communication engine 210, and/or crypto engine 212 may form aportion of the processor 120, the I/O subsystem 128, the CSME 144,and/or other components of the computing device 100. In particular, asshown in FIG. 2, the generation engine 202, communication engine 204,crypto engine 206, and service engine 208 may be embodied as digitallogic, microcode, or other resources of the processor 120. Further, asshown in FIG. 2, the communication engine 210 and crypto engine 212 maybe embodied as digital logic, microcode, or other resources of the CSME144. Additionally, in some embodiments, one or more of the illustrativecomponents may form a portion of another component and/or one or more ofthe illustrative components may be independent of one another.

The generation engine 202 is configured to create a locality identifier(LDID) that is distinct to the computing device 100. For example, thegeneration engine 202 may compute the LDID from a variety ofcharacteristics, such as a serial number of the processor 120, arandomly generated number, and a timestamp of when the LDID wasproduced.

The communication engine 204 is configured to transmit data to andreceive data from other components in the hardware platform of thecomputing device 100. The communication engine 204 may transmit the dataover a hardware bus (e.g., a Peripheral Component Interconnect Express(PCIe) bus, a Direct Media Interface (DMI) bus, etc.). Further, thecommunication engine 204 may transmit data over a sideband network ofthe hardware platform. The sideband network electrically connects theprocessor 120 with other hardware components in the computing device100. In one embodiment, the communication engine 204 may transmit theLDID to other hardware components in the computing device 100, such asthe CSME 144. In addition, the communication engine 204 may receiverequests to establish a secure communication session with the hardwarecomponents, such as the CSME 144. The communication engine 204 maytransmit additional data to components on the hardware platform (e.g.,challenge-response messages, cryptographic keys, and the like) toestablish the secure communication session.

The crypto engine 206 is configured to perform various cryptographicalgorithms to encrypt or decrypt data. For example, the crypto engine206 may perform Advanced Encryption Standard (AES), Galois/Counter Mode(GCM), AES-GCM, and the like. The crypto engine 206 is configured towrap a locality proof key using the LDID. The wrapped locality proof keymay be used to establish that a hardware component (e.g., the CSME 144)is in possession of the LDID. More specifically, the crypto engine 206may wrap the locality proof key, such that a hardware component must usethe LDID to recover the locality proof key.

The service engine 208 is configured to generate the locality proof key(LPK). The locality proof key may be used to establish that a hardwarecomponent (e.g., the CSME 144) is in possession of the LDID. Morespecifically, as described above, the crypto engine 206 may wrap thelocality proof key using the LDID, such that a hardware component mustuse the LDID to recover the locality proof key. The service engine 208is also configured to generate challenge-response messages, e.g., foruse in authenticating the processor 120 and another device inestablishing a secure session. The service engine 208 may be configuredto load a platform services enclave (PSE) to perform those operations.

The communication engine 210 is configured to transmit data to andreceive data from other components in the hardware platform of thecomputing device 100, such as the processor 120. The communicationengine 210 may transmit the data over a hardware bus (e.g., a PeripheralComponent Interconnect Express (PCIe) bus, a Direct Media Interface(DMI) bus, etc.). Further, the communication engine 210 may transmitdata over a sideband network of the hardware platform. The sidebandnetwork electrically connects the CSME 144 with other hardwarecomponents in the computing device 100. In one embodiment, thecommunication engine 210 may receive the LDID from the processor 120.Further, the communication engine 210 may also receive a wrappedlocality proof key from the processor 120.

The crypto engine 212 is configured to perform various cryptographicalgorithms to encrypt or decrypt data. For example, the crypto engine206 may perform AES-GCM and other types of algorithms. In context of thepresent disclosure, the crypto engine 206 may encrypt messages (e.g.,challenge-response messages) using an encryption key. The crypto engine212 is also configured to unwrap data using decryption methods. Forexample, the crypto engine 212 may decrypt messages (e.g.,challenge-response messages, messages containing identifier information)using an encryption key. More particularly, the crypto engine 212 mayuse the LDID as part of a decryption algorithm to recover a wrappedlocality proof key obtained from the processor 120 via the communicationengine 210.

Referring now to FIG. 3, diagram 300 illustrates an example of providinga locality domain identifier (LDID) between the processor 120 and theCSME 144. The diagram 300 depicts the processor 120 and the CSME 144 asbeing interconnected with a hardware bus 322 (e.g., a PCIe hardware bus,Direct Media Interface (DMI) hardware bus, host embedded controllerinterface (HECI) bus, sideband network, secure fabric 142, etc.). Asshown, the processor 120 includes cores 305, 310, which arerepresentative of processing units that read and execute programinstructions. Illustratively, the core 305 establishes a platformservices enclave (PSE) 307. The PSE 307 may communicate with the CSME144 via the hardware bus 322.

Although secure communication sessions ensure that communicationsbetween hardware components locally residing in the computing device 100remain secure, having a secure communication channel between thecomponents may not guarantee that a given processor 120 and the CSME 144reside on the same physical platform. Thus, without any safeguards inplace, an adversary may potentially attack the computing device 100 froma remote system. For example, an adversary may attempt to establish asecure communication session between a CSME 144 of a remote computingdevice 302 and components in the computing device 100, such as the PSE307 (as depicted with the double-arrowed line between the processor 120and the remote computing device 302). If established, the remote CSME144 could compromise various hardware components and secure enclaves inthe computing device 100. For example, the remote CSME 144 may becompromised to generate monotonic counter values to replay encryptedmessages protected using monotonic counter values from the PSE 307.

Embodiments presented herein disclose techniques for establishinglocality of hardware components in the computing device 100. In oneembodiment, the processor 120 generates a LDID 312. The LDID 312corresponds to an identifier that is generated per-boot of the computingdevice 100. Further, the LDID 312 is a value that is unique to thecomputing device 100. For example, the processor 120 may generate theLDID 312 as a function of the PSE 307, a timestamp of when the LDID 312was produced, and/or a randomly generated number. Further still, theprocessor 120 may store the LDID 312 in an area accessible to theprocessor 120, such as a reserved area of memory for the processor 120,a special register in the processor 120, etc.

Further, as further described herein, the processor 120 may share theLDID 312 with other hardware components residing in the computing device100, such as the CSME 144. Doing so allows the PSE 307 to establishlocality with the other hardware components. To ensure that hardwarecomponents that do not share the same hardware platform as the PSE 307do not have access to the LDID 312, the processor 120 may transmit theLDID to the CSME 144 and other processors in the computing device 100via the hardware bus 322. In practice, the processor 120 may do soduring boot of the hardware platform.

Further still, the processor 120 may generate a locality proof key(LPK). The LPK is a randomly generated cryptography key that the PSE 307uses to determine the locality of a given hardware component. Forinstance, the PSE 307 does so when establishing a secure communicationsession with the CSME 144. Once generated, the processor 120 wraps theLPK using the LDID. For example, the processor 120 may invoke an EBINDinstruction to wrap the LPK. The processor 120 may then send the wrappedLPK to the CSME 144. The LPK allows the processor 120 to establishlocality with the CSME 144 during initiation of a secure session withthe CSME 144. Doing so allows the processor 120 to determine that theCSME 144 is in possession of the LDID transmitted to the CSME 144 atboot time.

Referring now to FIG. 4, on boot of the hardware platform, the computingdevice 100 may execute a method 400 for establishing device locality. Insome embodiments, the operations of the method 400 may be performed byone or more components of the environment 200 of the computing device100. As shown, the method 400 begins in block 402, in which theprocessor 120 generates a LDID. For example, the processor 120 maygenerate a numeric value representative of the LDID from variousattributes, e.g., a serial number of the processor 120, a timestampindicative of when the processor 120 initiated generation of the LDID, anonce, etc. Once generated, the processor 120 may store the LDID, e.g.,in a register of the processor 120, processor reserved memory, etc.

In block 404, the processor 120 transmits the LDID to the CSME (and/orother processors in the computing device 100) via a local hardware bus,e.g., bus 322. Doing so via the local hardware bus ensures that thehardware components receiving the LDID are located on the hardwareplatform of the computing device 100 and not located on a remote device.In some embodiments, in block 406, the processor 120 transmits the LDIDto the CSME (and other processors) via a local sideband network of thehardware platform. The sideband network electrically connects theprocessor 120 with other hardware components in the computing device100. The processor 120, via the sideband network, may transmit signalsindicative of the LDID to the CSME 144. Data transmitted over thesideband network is not routable to remote devices.

In block 408, the processor 120 may enter the PSE. For example, theprocessor 120 may execute an enter instruction to do so. The PSE is anisolated, trusted execution environment, protected from unauthorizedaccess by the secure enclave support 122 of the processor 120. In turn,in block 410, the processor 120 generates a random LPK to distribute tothe CSME 144. The processor 120 may use a variety of key generationtechniques to do so, e.g., AES (Advanced Encryption Standard),Galois/Counter Mode (GCM), etc.

In block 412, the processor 120 transmits the locality proof key to theCSME 144. In block 414, the processor 120 executes an instruction toencrypt the LPK using the LDID. Doing so ensures that recipients not inpossession of the LDID cannot obtain the LPK. In block 416, theprocessor 120 wraps the LPK using the LDID. In particular, the platformservices enclave may invoke an EBIND instruction with a BIND_STRUCTobject, causing the processor 120 to wrap the BIND_STRUCT object. ABIND_STRUCT is a data structure that is partially populated by softwareand partially populated by hardware. One potential embodiment ofBIND_STRUCT is described in Table 1:

TABLE 1 BIND_STRUCT Offset Size Name of Offset (Bytes) (Bytes)Description VERSION 0 4 BIND_STRUCT version, must be 1 for firstinstantiation RSVD 4 12 Reserved, must be zero MAC 16 16 MAC onBTENCDATA, BTDATA, BTID, BTSVN, NONCE, SEQID BTID 32 4 Target deviceBTSVN 36 4 Target Security version number NONCE 40 8 Nonce forAuthenticated Responses SEQID 48 8 Seed for generating InitializationVector (IV) RSVD 56 8 Reserved, must be zero BTDATA 64 128 Targetspecific data BTENCDATA 192 48 Target specific encrypted data, must be amultiple of 16 BTUPDATA 240 16 Target specific data that is notencrypted nor integrity protected

The BIND_STRUCT object created by the processor 120 may include a BTIDfield with a value that is indicative of the CSME, e.g., BTID=0x1(LDID_HOLDER). Further, the PSE sets the BTENCDATA field to thegenerated LPK. The processor 120 then performs an algorithm to encryptthe BIND_STRUCT object. For example, the processor 120 may perform anAES-GCM algorithm to wrap the BIND_STRUCT object. The processor 120writes the encrypted LPK to the BIND_STRUCT object. In block 418, theprocessor 120 transmits the wrapped LPK to the CSME 144. To do so, theprocessor 120 may send the wrapped BIND_STRUCT object containing the LPKvia the local hardware bus. As another example, in block 420, theprocessor 120 transmits the BIND_STRUCT object to the CSME 144 via thesideband network. The wrapped BIND_STRUCT object may be delivered to theCSME 144 using any appropriate technique. For example, the wrappedBIND_STRUCT object may be delivered in response to the processor 120executing an UNWRAP instruction.

The CSME 144 receives the wrapped LPK from the processor 120. Moreparticularly, the CSME 144 receives the BIND_STRUCT object having theencrypted LPK from the processor 120. In block 422, the CSME 144 unwrapsthe BIND_STRUCT object using the LDID. For example, the CSME 144 maydecrypt the wrapped LPK, use the LDID as the decryption key. Onceunwrapped, the CSME 144 may store the LPK in a reserved area of memory,such as a volatile or non-volatile memory and/or memory range dedicatedto the CSME 144.

As stated, the processor 120 may establish a secure communicationsession with the CSME 144 (or other components in the hardware platformof the computing device 100. For example, the CSME 144 may send arequest to the processor 120 to establish a secure communicationsession, and the processor 120 receives the request. To ensure that theCSME 144 resides on the same platform as the processor 120, theprocessor 120 may issue a locality challenge to the CSME 144 (and viceversa) prior to establishing (or during establishment of) the securecommunication session. Referring now to FIG. 5, in block 424, theprocessor 120 transmits a locality challenge to the CSME 144corresponding to Proof_(Enclave)=PRF_(LPK)(Challenge_(CSME)). Inparticular, in block 426, the processor 120 may generate the localitychallenge. The locality challenge may be a message, such as a randomlygenerated sequence or number. In block 428, the processor 120 signs thelocality challenge using the LPK. The processor 120 may retrieve the LPKfrom storage and use the LPK as part of an encryption algorithm on thelocality challenge. In block 430, the processor 120 transmits theencrypted locality challenge to the CSME 144. For example, the processor120 may do so via the local hardware bus or the sideband network of thecomputing device 100.

The CSME 144 receives the wrapped locality challenge from the processor120. The CSME 144 may invoke a cryptographic algorithm on the wrappedlocality challenge to decrypt the locality challenge. The CSME 144 maygenerate a response to the locality challenge that matches an expectedresponse for the locality challenge. Further, the CSME 144 may wrap theresponse using the LPK and send the response to the processor 120.

In block 432, the processor 120 receives the locality challenge responsefrom the CSME 144. In block 434, the processor 120 validates theresponse to ensure a match to the expected response. If invalid, theprocessor 120 may return an error to the CSME 144 in block 436, afterwhich the method 400 ends. Otherwise, if the response is valid, then theprocessor 120 may process a locality challenge from the CSME 144.Particularly, the CSME 144 generates a locality challenge and signs thelocality challenge using the LPK (e.g., using similar techniques asdescribed above). The CSME 144 sends the encrypted locality challenge tothe processor 120. In block 438, the processor 120 receives the localitychallenge from the CSME 144.

In block 440, the processor 120 decrypts the locality challenge usingthe LPK. The processor 120 may then generate a locality challengeresponse. In block 442, the processor 120 sends the locality challengeresponse to the CSME 144, which, in turn, validates the response andsends an acknowledgement to the CSME 144. In block 444, the processor120 determines whether the acknowledgement is indicative that theresponse was successful. If not (e.g., if the CSME 144 returns an errorto the processor 120), then the method 400 advances to block 436, inwhich the processor 120 returns an error. Otherwise, in block 446, theprocessor 120 establishes a secure communication session with the CSME144. After establishing the secure communication session, the processor120 has ensured that the CSME 144 is located in the same physicalcomputing device 100, and thus the processor 120 may communicatesecurely with the CSME 144.

It should be appreciated that, in some embodiments, the method 400 maybe embodied as various instructions stored on a computer-readable media,which may be executed by the processor 120, the I/O subsystem 128, theCSME 144 and/or other components of the computing device 100 to causethe computing device 100 to perform the method 400. Thecomputer-readable media may be embodied as any type of media capable ofbeing read by the computing device 100 including, but not limited to,the memory 130, the data storage device 132, firmware devices, othermemory or data storage devices of the computing device 100, portablemedia readable by a peripheral device 140 of the computing device 100,and/or other media.

EXAMPLES

Illustrative examples of the technologies disclosed herein are providedbelow. An embodiment of the technologies may include any one or more,and any combination of, the examples described below.

Example 1 includes a computing device for establishing device locality,the computing device comprising: a processor comprising: a generationengine to generate an identifier, wherein the identifier is distinct tothe computing device, a communication engine to transmit the identifierto a management controller via a hardware bus in the computing device, aservice engine to generate the key, and a crypto engine to encrypt thekey with the identifier to generate a wrapped key in response togeneration of the key, wherein the service engine is further to transmitthe wrapped key to the management controller.

Example 2 includes the subject matter of Example 1, and wherein themanagement controller comprises a crypto engine to: decrypt the wrappedkey with the identifier to recover the key in response to transmissionof the wrapped key.

Example 3 includes the subject matter of any of Examples 1 and 2, andwherein: the service engine is further to: receive a request toestablish secure communication with the management controller; and senda first locality proof challenge to the management controller, whereinthe first locality proof challenge is signed with the key.

Example 4 includes the subject matter of any of Examples 1-3, andwherein the management controller comprises: a communication engine togenerate a response to the first locality proof challenge, and a cryptoengine to sign the response using the key.

Example 5 includes the subject matter of any of Examples 1-4, andwherein the service engine is further to: receive a response to thefirst locality proof challenge from the management controller, and tovalidate the response using the key.

Example 6 includes the subject matter of any of Examples 1-5, andwherein the service engine is further to: receive a second localityproof challenge from the management controller, generate a response tothe second locality proof challenge, sign the response using the key,and send the signed response to the management controller.

Example 7 includes the subject matter of any of Examples 1-6, andwherein the service engine is further to establish the securecommunication with the management controller in response to validationof the response.

Example 8 includes the subject matter of any of Examples 1-7, andwherein the service engine is further to return an error in response toa determination that the response to the first locality proof challengeis not valid.

Example 9 includes the subject matter of any of Examples 1-8, andwherein the management controller comprises a converged security andmanageability engine.

Example 10 includes the subject matter of any of Examples 1-9, andwherein to transmit the identifier to the management controller via thehardware bus comprises to: transmit the identifier to the managementcontroller via a sideband network.

Example 11 includes the subject matter of any of Examples 1-10, andwherein: the service engine is further to execute a first instruction bythe processor in response to generation of the key, to encrypt the keycomprises to encrypt the key using the identifier in response toexecution of the first instruction by the processor, and to transmit thewrapped key comprises to transmit the wrapped key to the managementcontroller via a sideband network.

Example 12 includes the subject matter of any of Examples 1-11, andwherein the first instruction comprises an EBIND instruction.

Example 13 includes the subject matter of any of Examples 1-12, andwherein to transmit the key comprises to: transmit the key in responseto execution of a second instruction by the processor.

Example 14 includes the subject matter of any of Examples 1-13, andwherein the second instruction comprises an UNWRAP instruction.

Example 15 includes the subject matter of any of Examples 1-14, andwherein the communication engine is further to: send the identifier toone or more second processors of the computing device via the hardwarebus.

Example 16 includes the subject matter of any of Examples 1-15, andwherein: the service engine is further to load a platform servicesenclave using secure enclave support of the processor, to generate thekey comprises to generate the key by the platform services enclave, andto transmit the wrapped key to the management controller comprises totransmit the wrapped key to the management controller by the platformservices enclave.

Example 17 includes the subject matter of any of Examples 1-16, andwherein to generate the identifier comprises to generate the identifierin response to a reset of the computing device.

Example 18 includes a method for establishing device locality, themethod comprising: generating, by a processor in a computing device, anidentifier distinct to the computing device; transmitting, by theprocessor, the identifier to a management controller via a hardware busin the computing device; generating, by the processor, a key;encrypting, by the processor, the key with the identifier to generate awrapped key in response to generation of the key; and transmitting, bythe processor, the wrapped key to the management controller.

Example 19 includes the subject matter of Example 18, and furthercomprising: decrypting, by the management controller, the wrapped keywith the identifier to recover the key in response to transmitting thewrapped key.

Example 20 includes the subject matter of any of Examples 18 and 19, andfurther comprising: receiving a request to establish securecommunication with the management controller; sending, by the processor,in response to the request, a first locality proof challenge to themanagement controller, wherein the first locality proof challenge issigned with the key.

Example 21 includes the subject matter of any of Examples 18-20, andfurther comprising: generating, by the management controller, a responseto the first locality proof challenge; and signing, by the managementcontroller, the response using the key.

Example 22 includes the subject matter of any of Examples 18-21, andfurther comprising: receiving, by the processor, a response to the firstlocality proof challenge from the management controller; and validating,by the processor, the response using the key.

Example 23 includes the subject matter of any of Examples 18-22, andfurther comprising: receiving a second locality proof challenge from themanagement controller; generating a response to the second localityproof challenge; signing the response using the key; and sending thesigned response to the management controller.

Example 24 includes the subject matter of any of Examples 18-23, andfurther comprising: establishing the secure communication with themanagement controller in response to validating the response.

Example 25 includes the subject matter of any of Examples 18-24, andfurther comprising: returning an error in response to determining thatthe response to the first locality proof challenge is not valid.

Example 26 includes the subject matter of any of Examples 18-25, andwherein the management controller is a converged security andmanageability engine.

Example 27 includes the subject matter of any of Examples 18-26, andwherein transmitting the identifier to the management controller via thehardware bus comprises: transmitting the identifier to the managementcontroller via a sideband network.

Example 28 includes the subject matter of any of Examples 18-27, andfurther comprising: executing a first instruction by the processor inresponse to generating the key, wherein encrypting the key comprisesencrypting the key using the identifier in response to executing thefirst instruction by the processor, and transmitting the wrapped keycomprises transmitting the wrapped key to the management controller viaa sideband network.

Example 29 includes the subject matter of any of Examples 18-28, andwherein executing the first instruction comprises executing an EBINDinstruction.

Example 30 includes the subject matter of any of Examples 18-29, andwherein transmitting the key comprises: transmitting the key in responseto executing a second instruction by the processor.

Example 31 includes the subject matter of any of Examples 18-30, andwherein executing the second instruction comprises executing an UNWRAPinstruction.

Example 32 includes the subject matter of any of Examples 18-31, andfurther comprising: sending, by the processor, the identifier to one ormore second processors of the computing device via the hardware bus.

Example 33 includes the subject matter of any of Examples 18-32, andfurther comprising: loading, by the computing device, a platformservices enclave using secure enclave support of the processor, whereingenerating the key comprises generating the key by the platform servicesenclave, and wherein transmitting the wrapped key to the managementcontroller comprises transmitting the wrapped key to the managementcontroller by the platform services enclave.

Example 34 includes the subject matter of any of Examples 18-33, andwherein generating the identifier comprises generating the identifier inresponse to a reset of the computing device.

Example 35 includes a computing device comprising: a processor; and amemory having stored therein a plurality of instructions that whenexecuted by the processor cause the computing device to perform themethod of any of Examples 18-34.

Example 36 includes one or more non-transitory, computer readablestorage media comprising a plurality of instructions stored thereon thatin response to being executed result in a computing device performingthe method of any of Examples 18-34.

Example 37 includes a computing device comprising means for performingthe method of any of Examples 18-34.

Example 38 includes a computing device for establishing device locality,the computing device comprising: means for generating, by a processor inthe computing device, an identifier distinct to the computing device;means for transmitting, by the processor, the identifier to a managementcontroller via a hardware bus in the computing device; means forgenerating, by the processor, a key; means for encrypting, by theprocessor, the key with the identifier to generate a wrapped key inresponse to generation of the key; and means for transmitting, by theprocessor, the wrapped key to the management controller.

Example 39 includes the subject matter of Example 38, and furthercomprising: means for decrypting, by the management controller, thewrapped key with the identifier to recover the key in response totransmitting the wrapped key.

Example 40 includes the subject matter of any of Examples 38 and 39, andfurther comprising: means for receiving a request to establish securecommunication with the management controller; means for sending, by theprocessor, in response to the request, a first locality proof challengeto the management controller, wherein the first locality proof challengeis signed with the key.

Example 41 includes the subject matter of any of Examples 38-40, andfurther comprising: means for generating, by the management controller,a response to the first locality proof challenge; and means for signing,by the management controller, the response using the key.

Example 42 includes the subject matter of any of Examples 38-41, andfurther comprising: means for receiving, by the processor, a response tothe first locality proof challenge from the management controller; andmeans for validating, by the processor, the response using the key.

Example 43 includes the subject matter of any of Examples 38-42, andfurther comprising: means for receiving a second locality proofchallenge from the management controller; means for generating aresponse to the second locality proof challenge; means for signing theresponse using the key; and means for sending the signed response to themanagement controller.

Example 44 includes the subject matter of any of Examples 38-43, andfurther comprising: means for establishing the secure communication withthe management controller in response to validating the response.

Example 45 includes the subject matter of any of Examples 38-44, andfurther comprising: means for returning an error in response todetermining that the response to the first locality proof challenge isnot valid.

Example 46 includes the subject matter of any of Examples 38-45, andwherein the management controller is a converged security andmanageability engine.

Example 47 includes the subject matter of any of Examples 38-46, andwherein the means for transmitting the identifier to the managementcontroller via the hardware bus comprises: means for transmitting theidentifier to the management controller via a sideband network.

Example 48 includes the subject matter of any of Examples 38-47, andfurther comprising: means for executing a first instruction by theprocessor in response to generating the key, wherein the means forencrypting the key comprises means for encrypting the key using theidentifier in response to executing the first instruction by theprocessor, and the means for transmitting the wrapped key comprisesmeans for transmitting the wrapped key to the management controller viaa sideband network.

Example 49 includes the subject matter of any of Examples 38-48, andwherein the means for executing the first instruction comprises meansfor executing an EBIND instruction.

Example 50 includes the subject matter of any of Examples 38-49, andwherein the means for transmitting the key comprises: means fortransmitting the key in response to executing a second instruction bythe processor.

Example 51 includes the subject matter of any of Examples 38-50, andwherein the means for executing the second instruction comprises meansfor executing an UNWRAP instruction.

Example 52 includes the subject matter of any of Examples 38-51, andfurther comprising: means for sending, by the processor, the identifierto one or more second processors of the computing device via thehardware bus.

Example 53 includes the subject matter of any of Examples 38-52, andfurther comprising: means for loading, by the computing device, aplatform services enclave using secure enclave support of the processor,wherein the means for generating the key comprises means for generatingthe key by the platform services enclave, and wherein the means fortransmitting the wrapped key to the management controller comprisesmeans for transmitting the wrapped key to the management controller bythe platform services enclave.

Example 54 includes the subject matter of any of Examples 38-53, andwherein the means for generating the identifier comprises means forgenerating the identifier in response to a reset of the computingdevice.

The invention claimed is:
 1. A computing device for establishing securecommunication using a device locality, the computing device comprising:a processor comprising: a generation engine to generate an identifierrepresenting the device locality of the computing device and associatethe identifier with each hardware component of a plurality of hardwarecomponents in the computing device such that each hardware component ofthe plurality of hardware components in the computing device shares theidentifier, wherein the identifier is distinct to the computing device;the plurality of hardware components comprising: a managementcontroller; a communication engine to transmit the identifier to themanagement controller via a hardware bus in the computing device; aservice engine configured to: load a platform services enclave; generatea key using the platform services enclave; transmit a wrapped key to themanagement controller via a sideband network; receive a request toestablish secure communication with the management controller; send afirst locality proof challenge to the management controller signed withthe key; and a crypto engine to encrypt the key with the identifier togenerate the wrapped key in response to generation of the key; whereinthe management controller comprises a second communication engine and asecond crypto engine and the management controller is further configuredto: decrypt, by the second crypto engine, the wrapped key received fromthe service engine to recover the key using the identifier; generate, bythe second communication engine, a response to the first locality proofchallenge and sign, by the second crypto engine, the response with thekey; and send, by the second communication engine, the response to thefirst locality proof challenge to the service engine; wherein theservice engine establishes secure communication with the managementcontroller in response to validation of the response to the firstlocality proof challenge.
 2. The computing device of claim 1, whereinthe service engine is further to: receive a response to the firstlocality proof challenge from the management controller, and to validatethe response to the first locality proof challenge using the key.
 3. Thecomputing device of claim 2, wherein the service engine is further to:receive a second locality proof challenge from the managementcontroller, generate a response to the second locality proof challenge,sign the response to the second locality proof challenge using the key,and send the signed response to the management controller.
 4. Thecomputing device of claim 2, wherein the service engine is further toreturn an error in response to a determination that the response to thefirst locality proof challenge is not valid.
 5. The computing device ofclaim 1, wherein: the service engine is further to execute a firstinstruction by the processor in response to generation of the key, toencrypt the key comprises to encrypt the key using the identifier inresponse to execution of the first instruction by the processor, and totransmit the wrapped key comprises to transmit the wrapped key to themanagement controller via the sideband network.
 6. The computing deviceof claim 5, wherein to transmit the key comprises to: transmit the keyin response to execution of a second instruction by the processor. 7.The computing device of claim 1, wherein to generate the identifiercomprises to generate the identifier in response to a reset of thecomputing device.
 8. A method for establishing secure communicationusing a device locality, the method comprising: generating, by aprocessor in a computing device, an identifier representing the devicelocality of the computing device and distinct to the computing device;associating the identifier with each hardware component of a pluralityof hardware components in the computing device such that each hardwarecomponent of the plurality of hardware components in the computingdevice shares the identifier, the plurality of hardware componentscomprising a management controller, a communication engine, a serviceengine, and a crypto engine; transmitting, by the communication engine,the identifier to the management controller via a hardware bus in thecomputing device; loading, by the service engine, a platform servicesenclave; generating, by the service engine, a key using the platformservices enclave; encrypting, by the crypto engine, the key with theidentifier to generate a wrapped key in response to generation of thekey; transmitting, by the service engine, the wrapped key to themanagement controller via a sideband network; receiving, by the serviceengine, a request to establish secure communication with the managementcontroller; sending, by the service engine, a first locality proofchallenge to the management control signed with the key; decrypting, bya second crypto engine of the management controller, the wrapped keyreceived from the service engine to recover the key using theidentifier; generating, by a second communication of the managementcontroller, a response to the first locality proof challenge; signing,by the second crypto engine, the response with the key; sending, by thesecond communication engine, the response to the first locality proofchallenge to the service engine; and establishing, by the serviceengine, secure communication with the management controller in responseto validation of the response to the first locality proof challenge. 9.The method of claim 8, further comprising: executing a first instructionby the processor in response to generating the key, wherein encryptingthe key comprises encrypting the key using the identifier in response toexecuting the first instruction by the processor, and transmitting thewrapped key comprises transmitting the wrapped key to the managementcontroller via the sideband network.
 10. The method of claim 9, whereintransmitting the key comprises: transmitting the key in response toexecuting a second instruction by the processor.
 11. One or morenon-transitory computer-readable storage media comprising a plurality ofinstructions stored thereon that, in response to being executed, cause acomputing device to: generate, by a processor in the computing device,an identifier distinct to the computing device, the identifierrepresenting a device locality of the computing device; associate theidentifier with each hardware component of a plurality of hardwarecomponents in the computing device such that each hardware component ofthe plurality of hardware components in the computing device shares theidentifier, the plurality of hardware components comprising a managementcontroller, a communication engine, a service engine, and a cryptoengine; transmit, by the communication engine, the identifier to themanagement controller via a hardware bus in the computing device; load,by the service engine, a platform services enclave; generate, by theservice engine, a key using the platform services enclave; encrypt, bythe crypto engine, the key with the identifier to generate a wrapped keyin response to generation of the key; transmit, by the service engine,the wrapped key to the management controller via a sideband network;receive, by the service engine, a request to establish securecommunication with the management controller; send, by the serviceengine, a first locality proof challenge to the management controllersigned with the key; decrypt, by a second crypto engine of themanagement controller, the wrapped key received from the service engineto recover the key using the identifier; generate, by a secondcommunication of the management controller, a response to the firstlocality proof challenge; sign, by the second crypto engine, theresponse with the key; send, by the second communication engine, theresponse to the first locality proof challenge to the service engine;and establish, by the service engine, secure communication with themanagement controller in response to validation of the response to thefirst locality proof challenge.
 12. The one or more non-transitorycomputer-readable storage media of claim 11, further comprising aplurality of instructions stored thereon that, in response to beingexecuted, cause the computing device to: execute a first instruction bythe processor in response to generating the key, wherein to encrypt thekey comprises to encrypt the key using the identifier in response toexecuting the first instruction by the processor, and to transmit thewrapped key comprises to transmit the wrapped key to the managementcontroller via the sideband network.
 13. The one or more non-transitorycomputer-readable storage media of claim 12, wherein to transmit the keycomprises to: transmit the key in response to executing a secondinstruction by the processor.